#include "BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.h"
#ifdef __cplusplus
extern "C" {
#endif
btTriIndex* bullet_NewbtTriIndex(int partId,int triangleIndex,btCollisionShape* shape){
	int c_arg_partId=partId;
	int c_arg_triangleIndex=triangleIndex;
	btCollisionShape * c_arg_shape=(btCollisionShape *)(void*)(shape);
	btTriIndex* wrap_out = new btTriIndex(c_arg_partId,c_arg_triangleIndex,c_arg_shape);
	return wrap_out;
}

int bullet_btTriIndex_GetFieldOfM_PartIdTriangleIndex(btTriIndex* c_this){
	return (int)(c_this->m_PartIdTriangleIndex);
}

int bullet_btTriIndex_getPartId(btTriIndex* c_this){
	int c_out = c_this->getPartId();
	int wrap_out = (c_out);
	return wrap_out;
}

int bullet_btTriIndex_getTriangleIndex(btTriIndex* c_this){
	int c_out = c_this->getTriangleIndex();
	int wrap_out = (c_out);
	return wrap_out;
}

int bullet_btTriIndex_getUid(btTriIndex* c_this){
	int c_out = c_this->getUid();
	int wrap_out = (c_out);
	return wrap_out;
}

btSoftBodyTriangleCallback* bullet_NewbtSoftBodyTriangleCallback(btDispatcher* dispatcher,btCollisionObjectWrapper* body0Wrap,btCollisionObjectWrapper* body1Wrap,bool isSwapped){
	btDispatcher * c_arg_dispatcher=(btDispatcher *)(void*)(dispatcher);
	btCollisionObjectWrapper const * c_arg_body0Wrap=(btCollisionObjectWrapper const *)(void*)(body0Wrap);
	btCollisionObjectWrapper const * c_arg_body1Wrap=(btCollisionObjectWrapper const *)(void*)(body1Wrap);
	bool c_arg_isSwapped=isSwapped;
	btSoftBodyTriangleCallback* wrap_out = new btSoftBodyTriangleCallback(c_arg_dispatcher,c_arg_body0Wrap,c_arg_body1Wrap,c_arg_isSwapped);
	return wrap_out;
}

void bullet_btSoftBodyTriangleCallback_clearCache(btSoftBodyTriangleCallback* c_this){
	c_this->clearCache();
}

btVector3* bullet_btSoftBodyTriangleCallback_getAabbMax(btSoftBodyTriangleCallback* c_this){
	btVector3 const& c_out = c_this->getAabbMax();
	btVector3* wrap_out = (btVector3*)(&c_out);
	return wrap_out;
}

btVector3* bullet_btSoftBodyTriangleCallback_getAabbMin(btSoftBodyTriangleCallback* c_this){
	btVector3 const& c_out = c_this->getAabbMin();
	btVector3* wrap_out = (btVector3*)(&c_out);
	return wrap_out;
}

int bullet_btSoftBodyTriangleCallback_GetFieldOfM_triangleCount(btSoftBodyTriangleCallback* c_this){
	return (int)(c_this->m_triangleCount);
}

void bullet_btSoftBodyTriangleCallback_setTimeStepAndCounters(btSoftBodyTriangleCallback* c_this,double collisionMarginTriangle,btCollisionObjectWrapper* triObjWrap,btDispatcherInfo* dispatchInfo,btManifoldResult* resultOut){
	btScalar c_arg_collisionMarginTriangle=collisionMarginTriangle;
	btCollisionObjectWrapper const * c_arg_triObjWrap=(btCollisionObjectWrapper const *)(void*)(triObjWrap);
	btDispatcherInfo const& c_arg_dispatchInfo=(btDispatcherInfo const&)(*dispatchInfo);
	btManifoldResult * c_arg_resultOut=(btManifoldResult *)(void*)(resultOut);
	c_this->setTimeStepAndCounters(c_arg_collisionMarginTriangle,c_arg_triObjWrap,c_arg_dispatchInfo,c_arg_resultOut);
}

btSoftBodyConcaveCollisionAlgorithm::SwappedCreateFunc* bullet_NewbtSoftBodyConcaveCollisionAlgorithmSwappedCreateFunc(){
	btSoftBodyConcaveCollisionAlgorithm::SwappedCreateFunc* wrap_out = new btSoftBodyConcaveCollisionAlgorithm::SwappedCreateFunc();
	return wrap_out;
}

btSoftBodyConcaveCollisionAlgorithm::CreateFunc* bullet_NewbtSoftBodyConcaveCollisionAlgorithmCreateFunc(){
	btSoftBodyConcaveCollisionAlgorithm::CreateFunc* wrap_out = new btSoftBodyConcaveCollisionAlgorithm::CreateFunc();
	return wrap_out;
}

btSoftBodyConcaveCollisionAlgorithm* bullet_NewbtSoftBodyConcaveCollisionAlgorithm(btCollisionAlgorithmConstructionInfo* ci,btCollisionObjectWrapper* body0Wrap,btCollisionObjectWrapper* body1Wrap,bool isSwapped){
	btCollisionAlgorithmConstructionInfo const& c_arg_ci=(btCollisionAlgorithmConstructionInfo const&)(*ci);
	btCollisionObjectWrapper const * c_arg_body0Wrap=(btCollisionObjectWrapper const *)(void*)(body0Wrap);
	btCollisionObjectWrapper const * c_arg_body1Wrap=(btCollisionObjectWrapper const *)(void*)(body1Wrap);
	bool c_arg_isSwapped=isSwapped;
	btSoftBodyConcaveCollisionAlgorithm* wrap_out = new btSoftBodyConcaveCollisionAlgorithm(c_arg_ci,c_arg_body0Wrap,c_arg_body1Wrap,c_arg_isSwapped);
	return wrap_out;
}

void bullet_btSoftBodyConcaveCollisionAlgorithm_clearCache(btSoftBodyConcaveCollisionAlgorithm* c_this){
	c_this->clearCache();
}

#ifdef __cplusplus
}
#endif
